package com.yikaiye.android.yikaiye.http;

import com.yikaiye.android.yikaiye.model.AlipayModel;
import com.yikaiye.android.yikaiye.model.CheckComboResponseModel;
import com.yikaiye.android.yikaiye.model.OrderProductModel;
import com.yikaiye.android.yikaiye.model.UserModel;
import com.yikaiye.android.yikaiye.model.VerifyCodeModel;
import com.yikaiye.android.yikaiye.pay.WeChatInfoModel;

import io.reactivex.Observable;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;

/**
 * 网络请求api
 */
public interface ApiService {

    /**
     * 验证码
     */
    @PUT(ApiFactory.SEND_CODE)
    Observable<HttpRespond<VerifyCodeModel>> sendCode(@Body RequestBody requestBody);

    /**
     * 伪token
     */
    @POST(ApiFactory.SEND_CODE)
    Observable<HttpRespond<UserModel>> verifyCode(@Body RequestBody requestBody);

    /**
     * 验证验证码(登录)
     */
    @POST(ApiFactory.LOGIN)
    Observable<HttpRespond<UserModel>> login(@Body RequestBody requestBody);

    /**
     * 重置密码
     */
    @POST(ApiFactory.RESET_PASSWORD)
    Observable<HttpRespond<UserModel>> resetPassword(@Body RequestBody requestBody);

    /**
     * 绑定手机号
     */
    @POST(ApiFactory.BIND_PHONE)
    Observable<HttpRespond<UserModel>> bindPhone(@Body RequestBody requestBody);

//    /**
//     * 产品分类
//     */
//    @POST(ApiFactory.GET_TYPE_LIST)
//    Observable<HttpRespond<TypeModel>> getTypeList(@Body RequestBody requestBody);
//
//    /**
//     * 产品列表
//     */
//    @POST(ApiFactory.GET_PRODUCT_LIST)
//    Observable<HttpRespond<ProductDataModel>> getProductList(@Body RequestBody requestBody);
//
//    /**
//     * 产品详情
//     */
//    @GET(ApiFactory.GET_PRODUCT_DETAILS + "{id}")
//    Observable<HttpRespond<ProductDetailDataModel>> getProductDetails(@Path("id") String id);
//
//    /**
//     * 提交订单
//     */
//    @POST(ApiFactory.COMMIT_ORDER)
//    Observable<HttpRespond<CommitOrderResultModel>> commitOrder(@Body RequestBody requestBody);

    /**
     * 微信预支付接口
     */
    @POST("/api/yky/app/order-new/{order-id}/pay/unified-order/{pay-platform}/{pay-code}")
    Observable<HttpRespond<WeChatInfoModel>> getWeChatPay(@Path("order-id") String orderId,
                                                          @Path("pay-platform") String payPlatform,
                                                          @Path("pay-code") String payCode,
                                                          @Body RequestBody requestBody);

    /**
     * 支付宝接口
     */
    @POST("/api/yky/app/order-new/{order-id}/pay/unified-ali-order/{pay-platform}/{pay-code}")
    Observable<HttpRespond<AlipayModel>> getAliPay(@Path("order-id") String orderId,
                                                   @Path("pay-platform") String payPlatform,
                                                   @Path("pay-code") String payCode,
                                                   @Body RequestBody requestBody);

    /**
     * 检查是否存在此套餐
     */
    @POST(ApiFactory.CHECK_PRODUCT)
    Observable<HttpRespond<CheckComboResponseModel>> checkProduct(@Body RequestBody requestBody);

//    /**
//     * 查询订单
//     *
//     * @param status 订单状态，0：待付款，1：已付款，2：已取消，3：已退款，4：超时
//     */
//    @GET(ApiFactory.COMMIT_ORDER)
//    Observable<HttpRespond<OrderDataModel>> getOrderList(@Query("status") String status,
//                                                         @Query("page") int page,
//                                                         @Query("size") int size);
//
//    /**
//     * 查询预订单 type 预订单2
//     */
//    @GET(ApiFactory.COMMIT_ORDER + "?page=1&size=1&type=2")
//    Observable<HttpRespond<OrderDataModel>> getOrderList();

    /**
     * 取消订单
     */
    @GET(ApiFactory.CANCEL_ORDER + "{id}")
    Observable<HttpRespond<String>> cancelOrder(@Path("id") String id);

    /**
     * 取消预订单
     */
    @GET(ApiFactory.CANCEL_PRE_ORDER + "{id}")
    Observable<HttpRespond<String>> cancelPreOrder(@Path("id") String id);

    /**
     * 订单详情
     */
    @GET(ApiFactory.GET_ORDER_DETAILS + "{id}")
    Observable<HttpRespond<OrderProductModel>> getOrderDetails(@Path("id") String id);

    /**
     * 重新下单
     */
    @POST(ApiFactory.ORDER_AGAIN)
    Observable<HttpRespond<String>> orderAgain(@Body RequestBody requestBody);

//    /**
//     * 消息列表
//     */
//    @GET(ApiFactory.GET_MESSAGE_LIST + "{uid}")
//    Observable<HttpRespond<List<MessageModel>>> getMessageList(@Path("uid") String userId);
//
//    /**
//     * 全部标为已读
//     */
//    @GET(ApiFactory.MESSAGE_ALREADY_READ + "{uid}")
//    Observable<HttpRespond<String>> allReady(@Path("uid") String userId);
//
//    /**
//     * 删除消息
//     */
//    @GET(ApiFactory.DELETE_MESSAGE + "{id}")
//    Observable<HttpRespond<String>> deleteMessage(@Path("id") String id);
//
//    /**
//     * 个人信息
//     */
//    @GET(ApiFactory.GET_USER_INFO + "{id}")
//    Observable<HttpRespond<UserModel>> getUserInfo(@Path("id") String id);
//
//    /**
//     * 修改个人信息
//     */
//    @POST(ApiFactory.UPDATE_USER_INFO)
//    Observable<HttpRespond<String>> updateUserInfo(@Body RequestBody requestBody);
//
//    @Multipart
//    @POST(ApiFactory.UPLOAD_IMAGE)
//    Observable<HttpRespond<String>> uploadImage(@Part MultipartBody.Part image_part);

    /**
     * 添加企业
     */
    @POST(ApiFactory.ADD_COMPANY)
    Observable<HttpRespond<String>> addCompany(@Body RequestBody requestBody);

//    /**
//     * 版本更新
//     */
//    @GET(ApiFactory.CHECK_VERSION)
//    Observable<HttpRespond<VersionModel>> checkVersion();
//
//    /**
//     * 获取用户专属客服
//     */
//    @GET(ApiFactory.GET_CUSTOMER_SERVICE)
//    Observable<HttpRespond<List<CustomerServiceModel>>> getCustomerService();
//
//    /**
//     * 法大大实名认证
//     * platform：登录平台（0-易开业_微信, 1-易开业_IOS, 2-易开业_安卓, 3-易开业_PC, 4-易开业_小程序,5- 进价网,
//     * 6-易创_IOS, 7-易创_安卓, 8-易创_微信）
//     * source：数据源 （1）
//     */
//    @POST("/api/yky/app/fdd/identityVerify/verifyNew")
//    Observable<HttpRespond<FddModel>> realNameVerify(@Body RequestBody requestBody);
//
//    /**
//     * 重新实名认证
//     */
//    @POST("/api/yky/app/fdd/identityVerify/verifyNew/reset")
//    Observable<HttpRespond<FddModel>> resetVerify(@Body RequestBody requestBody);
//
//    /**
//     * 查看认证结果
//     */
//    @GET("/api/yky/app/fdd/identityVerify/queryNew?platform=2&source=1")
//    Observable<HttpRespond<FddModel>> queryVerifyResult(@Query("orderNo") String orderNo,
//                                                        @Query("customerType") int customerType);
//
//    /**
//     * 签署协议
//     */
//    @POST("/api/yky/app/fdd/signContract/sign/{orderNo}?platform=2&source=1")
//    Observable<HttpRespond<FddModel>> signContract(@Path("orderNo") String orderNo,
//                                                   @Query("customerType") int customerType);
//
//    /**
//     * 查看合同
//     */
//    @POST("/api/yky/app/fdd/signContract/view/{orderNo}?platform=2&source=1")
//    Observable<HttpRespond<FddModel>> lookView(@Path("orderNo") String orderNo);
//
//    /**
//     * 通过手机号查找用户企业
//     *
//     * @param triggerType 0下单选择我的企业，1我的（我的企业）
//     */
//    @GET(ApiFactory.GET_MY_COMPANY_LIST)
//    Observable<HttpRespond<List<CompanyModel>>> getMyCompanyList(@Query("userPhone") String userPhone, @Query("triggerType") int triggerType);
//
//    /**
//     * 根据企业ID 查找服务分类
//     */
//    @GET(ApiFactory.GET_SERVICE_TAB)
//    Observable<HttpRespond<List<ServiceTabModel>>> getServiceTab(@Query("creditNo") String creditNo);
//
//    /**
//     * 根据企业ID 查找服务列表
//     */
//    @GET(ApiFactory.GET_SERVICE_LIST)
//    Observable<HttpRespond<List<CompanyServiceModel>>> getServiceList(@Query("creditNo") String creditNo,
//                                                                      @Query("status") String status,
//                                                                      @Query("x-user-id") String userId);
//
//    /**
//     * 根据服务id和周期，查找周期开始结束时间
//     */
//    @GET(ApiFactory.GET_SERVICE_PROGRESS)
//    Observable<HttpRespond<ServiceProgressModel>> getServiceProgress(@Query("trackId") String trackId,
//                                                                     @Query("period") String period);
//
//    /**
//     * 获取发票抬头列表
//     */
//    @GET(ApiFactory.GET_BILL_TITLE_LIST)
//    Observable<HttpRespond<List<BillTitleModel>>> getBillTitleList();
//
//    /**
//     * 添加或编辑发票抬头
//     */
//    @POST(ApiFactory.ADD_OR_EDIT_BILL_TITLE)
//    Observable<HttpRespond<String>> addOrEditBillTitle(@Body RequestBody requestBody);
//
//    /**
//     * 获取发票信息
//     */
//    @GET(ApiFactory.GET_BILL_TITLE_INFO)
//    Observable<HttpRespond<BillTitleModel>> getBillTitleInfo(@Query("id") String id);
//
//    /**
//     * 删除发票抬头
//     */
//    @POST(ApiFactory.DELETE_BILL_TITLE)
//    Observable<HttpRespond<String>> deleteBillTitle(@Query("id") String id);

//    /**
//     * 申请开票
//     */
//    @POST(ApiFactory.APPLY_BILL)
//    Observable<HttpRespond<String>> applyBill(@Body RequestBody requestBody);
//
//    /**
//     * 查询用户最近一次开票信息
//     */
//    @GET(ApiFactory.GET_BILL_INFO)
//    Observable<HttpRespond<BillInfoModel>> getBillInfo();
//
//    /**
//     * 我的发票列表（默认获取当前用户当月发票信息）
//     * auditResult: 审核状态（0-未审核，1-通过，2-驳回，3-全部）
//     */
//    @POST(ApiFactory.GET_MY_BILL_LIST)
//    Observable<HttpRespond<List<BillModel>>> getMyBillList(@Body RequestBody requestBody);
//
//    /**
//     * 获取发票详细信息
//     */
//    @GET(ApiFactory.GET_BILL_DETAILS)
//    Observable<HttpRespond<BillModel.ChildModel>> getBillDetails(@Query("id") String id);
//
//    /**
//     * 首页开票入口状态
//     */
//    @GET(ApiFactory.GET_HOME_ICON_STATUS)
//    Observable<HttpRespond<HomeIconStatusModel>> getHomeIconStatus();
}
